package gestion.horarios.model.jpa.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the curso database table.
 * 
 */
@Entity
@Table(name="curso")
public class Curso implements Serializable {
	private static final long serialVersionUID = 1L;
	private int cursoId;
	private String codigo;
	private String estado;
	private String nombre;
	private String nombreBreve;
	private String nombreMinisterio;
	private CursoPropuesto cursopropuesto;
	private List<DetallePlanCurricular> detalleplancurriculars;
	private List<DetallePrerequisitoPlanCurricular> detalleprerequisitoplancurriculars;
	private List<Docente> docentes;
	private List<Proyeccion> proyeccions;
	private List<RatiosProyeccion> ratiosproyeccions;
	private List<SesionLectiva> sesionlectivas;

    public Curso() {
    }


	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	public int getCursoId() {
		return this.cursoId;
	}

	public void setCursoId(int cursoId) {
		this.cursoId = cursoId;
	}


	@Column(length=45)
	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}


	@Column(length=45)
	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}


	@Column(length=45)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}


	@Column(length=45)
	public String getNombreBreve() {
		return this.nombreBreve;
	}

	public void setNombreBreve(String nombreBreve) {
		this.nombreBreve = nombreBreve;
	}


	@Column(length=45)
	public String getNombreMinisterio() {
		return this.nombreMinisterio;
	}

	public void setNombreMinisterio(String nombreMinisterio) {
		this.nombreMinisterio = nombreMinisterio;
	}


	//bi-directional many-to-one association to CursoPropuesto
    @ManyToOne
	@JoinColumn(name="CursoPropuestoId", nullable=false)
	public CursoPropuesto getCursopropuesto() {
		return this.cursopropuesto;
	}

	public void setCursopropuesto(CursoPropuesto cursopropuesto) {
		this.cursopropuesto = cursopropuesto;
	}
	

	//bi-directional many-to-one association to DetallePlanCurricular
	@OneToMany(mappedBy="curso")
	public List<DetallePlanCurricular> getDetalleplancurriculars() {
		return this.detalleplancurriculars;
	}

	public void setDetalleplancurriculars(List<DetallePlanCurricular> detalleplancurriculars) {
		this.detalleplancurriculars = detalleplancurriculars;
	}
	

	//bi-directional many-to-one association to DetallePrerequisitoPlanCurricular
	@OneToMany(mappedBy="curso")
	public List<DetallePrerequisitoPlanCurricular> getDetalleprerequisitoplancurriculars() {
		return this.detalleprerequisitoplancurriculars;
	}

	public void setDetalleprerequisitoplancurriculars(List<DetallePrerequisitoPlanCurricular> detalleprerequisitoplancurriculars) {
		this.detalleprerequisitoplancurriculars = detalleprerequisitoplancurriculars;
	}
	

	//bi-directional many-to-many association to Docente
    @ManyToMany
	@JoinTable(
		name="docentescurso"
		, joinColumns={
			@JoinColumn(name="CursoId", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="DocenteId", nullable=false)
			}
		)
	public List<Docente> getDocentes() {
		return this.docentes;
	}

	public void setDocentes(List<Docente> docentes) {
		this.docentes = docentes;
	}
	

	//bi-directional many-to-one association to Proyeccion
	@OneToMany(mappedBy="curso")
	public List<Proyeccion> getProyeccions() {
		return this.proyeccions;
	}

	public void setProyeccions(List<Proyeccion> proyeccions) {
		this.proyeccions = proyeccions;
	}
	

	//bi-directional many-to-one association to RatiosProyeccion
	@OneToMany(mappedBy="curso")
	public List<RatiosProyeccion> getRatiosproyeccions() {
		return this.ratiosproyeccions;
	}

	public void setRatiosproyeccions(List<RatiosProyeccion> ratiosproyeccions) {
		this.ratiosproyeccions = ratiosproyeccions;
	}
	

	//bi-directional many-to-one association to SesionLectiva
	@OneToMany(mappedBy="curso")
	public List<SesionLectiva> getSesionlectivas() {
		return this.sesionlectivas;
	}

	public void setSesionlectivas(List<SesionLectiva> sesionlectivas) {
		this.sesionlectivas = sesionlectivas;
	}
	
}